🚦 Next.js Middleware 활용 (인증·리다이렉트)
Middleware는 요청이 페이지/API에 도달하기 전에 실행되어, 인증 체크나 리다이렉트 같은 공통 로직을 처리할 수 있습니다.
1️⃣ 기본 구조
// middleware.ts (프로젝트 루트)
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
export function middleware(request: NextRequest) {
return NextResponse.next();
}
export const config = {
matcher: ["/dashboard/:path*"], // 이 경로에만 미들웨어 적용
};
- Edge Runtime에서 실행되어 일반 Node.js API를 모두 쓸 수는 없지만, 그만큼 빠르게 요청 초기에 개입 가능
2️⃣ 인증 체크 예시
export function middleware(request: NextRequest) {
const token = request.cookies.get("token");
if (!token) {
return NextResponse.redirect(new URL("/login", request.url));
}
return NextResponse.next();
}
- 로그인하지 않은 사용자가 보호된 경로에 접근하면 로그인 페이지로 즉시 리다이렉트
3️⃣ 요청/응답 헤더 조작
export function middleware(request: NextRequest) {
const response = NextResponse.next();
response.headers.set("x-request-id", crypto.randomUUID());
return response;
}
- A/B 테스트용 쿠키 설정, 요청 추적 ID 삽입처럼 모든 요청에 공통으로 적용할 로직을 한 곳에서 관리 가능
4️⃣ 주의할 점
- Middleware는 모든 매칭 경로의 요청마다 실행되므로, 무거운 로직(DB 직접 조회 등)을 넣으면 전체 응답 속도에 영향을 줌
- Edge Runtime 제약으로 일부 Node.js 전용 라이브러리는 사용할 수 없음
✍️ 한 줄 정리
Middleware는 페이지/API 도달 전에 Edge에서 실행되어 인증·리다이렉트·헤더 조작 같은 공통 로직을 처리하기 좋지만, 모든 요청에 실행되는 만큼 가볍게 유지해야 한다.